scope
The scope of variables can be:

  AUTO
  AUTOX
  STATIC
  SHARED
  SHARED /groupname/
  EXTERNAL
  EXTERNAL /groupname/

Scope controls access to variables in the following way:

EXTERNAL variables are accessible to all programs in a single executable, which may be more than one program if linked together into an executable or library.  EXTERNAL variables are not shared between separate executables, whether programs or libraries.

SHARED variables are accessible to all functions in a program.

STATIC variables are accessible to a single function, but are common to all instances of the function.

AUTO and AUTOX variables are accessible only by a single instance of a function - they are newly created each time the function is called.

visible scope
Two scope prefixes are defined so SHARED and EXTERNAL variables can be visibly marked and not redeclared in every function that accesses them.

Variable names with a # prefix are SHARED , whether or not they appear in a SHARED variable declaration statement or not.

Variable names with a ## prefix are EXTERNAL , whether or not they appear in an EXTERNAL variable declaration or not.

Note that variables xx and #xx and ##xx are three independent variables, no matter the scope and/or data type of xx . # and ## prefixes are considered part of the variable name or symbol.